<?php
class ItemdeVenda Extends TRecord
{
	const TABLENAME='itemdevenda';
	/*
	 * reecrevemos o construstor para que possamos instanciar um objeto já com seus
	* atributos
	*/
	public function __construct($id = NULL,$idvenda =NULL,$idproduto=NULL) {
		if ($id)
		{
			parent::__construct($id);
		}
		else if ($idvenda<>NULL and $idproduto<>NULL)
		{
			$this->idvenda=$idvenda;
			$this->idprotudo=$idproduto;
			//como a função desta classe é so mediar relacionamentos
			//usamos o metodo de armazena logo em sua construção
		}
	
}
	public function carregaProdutos($idvenda){
		$produtos = $this->carregaVisao('produtosdavenda', $idvenda, 'idvenda');
		if ($produtos){
			foreach ($produtos as $produto){
				$resultado[]= new Produto($produto->id);
			}
			return $resultado;
		}
		else{
			return FALSE;
		}
	
	}
	public function carregaId($idvenda,$idproduto){
		//instancia instrução de SELECT
		$sql = new TSqlSelect();
		$sql->setEntity('produtosdavenda');
		$sql->addColumn('id');
	
		//cria critério de seleção basedado no ID
		$criterio= new TCriteria();
		$criterio->add(new TFilter('idvenda', '=', $idvenda));
		$criterio->add(new TFilter('idproduto', '=', $idproduto));
		//define o criterio de selção de dados
		$sql->setCriteria($criterio);
		//obtém transação ativa
		if ($con=TTransaction::Pega())
		{
			//cria mensagem de log e executa a consulta
			TTransaction::Log($sql->getInstruction());
			$resultado= $con->query($sql->getInstruction());
			//se retornou algum dado
			if ($resultado)
			{
				//rorna dados em forma de objeto
				$objeto= $resultado->fetch();
			}
			return $objeto[0];
		}
		else
		{
			//se não tiver transação, retonra uma exceção
			throw  new Exception('Não há transação ativa!!');
		}
	}

}
?>